% fname: routing_oddeven__sel_bufferlevel__topology_8x8__.m
% ./noxim -routing oddeven -sel bufferlevel -dimx 8 -dimy 8  -sim 10000 -warmup 2000 -size 8 8 -buffer 2 

function [max_pir, max_throughput, min_delay] = routing_oddeven__sel_bufferlevel__topology_8x8__(symbol)

data = [
%             pir      avg_delay     throughput      max_delay       rpackets         rflits
            0.007        19.4107      0.0554023            146           3545          28366
            0.007        18.8338      0.0565332            110           3617          28945
            0.007        18.2364      0.0558437            111           3575          28592
            0.007        19.1524      0.0567988            123           3634          29081
            0.007        18.5672      0.0553828             91           3547          28356
            0.007        19.1629      0.0559023            147           3579          28622
            0.007        18.5837      0.0554082            154           3548          28369
            0.007        18.4205      0.0562891            101           3603          28820
            0.007        18.5896      0.0568633            101           3638          29114
            0.007        18.6167      0.0554492            143           3548          28390
            0.007        19.0723      0.0567891             94           3637          29076
            0.007        19.5222      0.0570215            140           3650          29195
            0.007        18.7014      0.0554121            113           3543          28371
            0.007        19.1075      0.0578242             96           3702          29606
            0.007        18.3343      0.0566465             83           3622          29003
            0.007        18.7751      0.0555977            179           3561          28466
            0.007        18.7066      0.0565937            106           3620          28976
            0.007        18.7037       0.055168             95           3530          28246
            0.007        18.6686      0.0560918            100           3588          28719
            0.007        18.9869      0.0574824            115           3675          29431
            0.008        20.0936      0.0650918            105           4165          33327
            0.008         20.619       0.064916            115           4155          33237
            0.008        20.3047      0.0627148            152           4011          32110
            0.008        20.7477      0.0640039            134           4098          32770
            0.008        20.7328      0.0655547            161           4199          33564
            0.008        19.5915      0.0630859            114           4039          32300
            0.008         20.477       0.062752            112           4015          32129
            0.008        20.3967      0.0620176            141           3968          31753
            0.008        20.1598      0.0639121            164           4092          32723
            0.008         20.251      0.0644863            170           4127          33017
            0.008        19.5599       0.064043            104           4099          32790
            0.008        20.7291      0.0631152            163           4039          32315
            0.008        20.3724      0.0641387            179           4108          32839
            0.008        20.7929      0.0652812            154           4181          33424
            0.008        19.8339      0.0645625             98           4135          33056
            0.008        20.4604      0.0631387            134           4042          32327
            0.008        20.1704      0.0629141            122           4026          32212
            0.008        20.3022      0.0635762            109           4067          32551
            0.008         20.788      0.0643008            122           4113          32922
            0.008        19.5468       0.063459            101           4062          32491
            0.009        22.2431      0.0721094            177           4616          36920
            0.009        22.6013      0.0697695            172           4465          35722
            0.009        21.8735       0.071543            110           4577          36630
            0.009        22.8757      0.0730391            150           4674          37396
            0.009        22.1204      0.0716484            237           4584          36684
            0.009        22.3668      0.0720859            136           4613          36908
            0.009        21.3934      0.0697109            167           4456          35692
            0.009        22.2038      0.0735371            215           4711          37651
            0.009         22.017      0.0708008            154           4535          36250
            0.009        21.9463      0.0709805            165           4545          36342
            0.009        22.3032      0.0724375            132           4637          37088
            0.009        24.0787      0.0733281            175           4691          37544
            0.009        22.6317      0.0721445            165           4618          36938
            0.009        23.8806      0.0712324            184           4555          36471
            0.009        22.8547      0.0729668            156           4667          37359
            0.009        23.5382      0.0713594            201           4569          36536
            0.009        22.0692       0.072084            143           4611          36907
            0.009        21.7079      0.0703984            136           4505          36044
            0.009        22.1889      0.0709512            153           4541          36327
            0.009        22.9621      0.0720527            142           4612          36891
             0.01        25.5411      0.0796738            173           5097          40793
             0.01        30.6831      0.0799766            339           5119          40948
             0.01        24.1432       0.080666            134           5159          41301
             0.01        24.4848      0.0800254            186           5122          40973
             0.01        24.9906      0.0783496            167           5012          40115
             0.01        25.8867      0.0816367            220           5224          41798
             0.01         28.838      0.0796504            363           5098          40781
             0.01          30.71       0.080248            645           5135          41087
             0.01        24.7242      0.0819023            198           5240          41934
             0.01         25.698      0.0805371            203           5155          41235
             0.01        24.2121      0.0797285            196           5105          40821
             0.01        23.9693      0.0783105            179           5012          40095
             0.01        24.3027      0.0792109            224           5067          40556
             0.01        24.6605      0.0789102            230           5049          40402
             0.01        24.6523      0.0778691            232           4984          39869
             0.01        25.8373      0.0808848            186           5176          41413
             0.01        26.5842      0.0790918            228           5060          40495
             0.01         25.796       0.079373            178           5079          40639
             0.01        27.5842      0.0800898            258           5127          41006
             0.01        25.7557      0.0806914            168           5161          41314
            0.011        37.4935      0.0890547            396           5698          45596
            0.011        38.6028        0.08675            495           5552          44416
            0.011         28.118      0.0875801            256           5604          44841
            0.011         30.556      0.0867168            333           5550          44399
            0.011         29.191      0.0878125            260           5618          44960
            0.011          30.71       0.086582            356           5542          44330
            0.011        29.6884      0.0883633            234           5658          45242
            0.011        30.0633      0.0859082            351           5498          43985
            0.011        37.1026      0.0896133            464           5739          45882
            0.011        40.4953       0.087541            498           5601          44821
            0.011        26.6614      0.0872891            177           5584          44692
            0.011        31.6558      0.0898555            330           5750          46006
            0.011        30.1492      0.0861211            273           5510          44094
            0.011        31.3857      0.0890176            277           5699          45577
            0.011        27.8196      0.0875645            235           5604          44833
            0.011        35.5229      0.0876387            446           5611          44871
            0.011        31.7063      0.0886289            290           5673          45378
            0.011         37.405      0.0884531            380           5664          45288
            0.011        31.3158      0.0895586            266           5732          45854
            0.011        32.9868      0.0884961            354           5665          45310
            0.012        98.2617      0.0959492           1554           6140          49126
            0.012        186.968      0.0989824           2722           6333          50679
            0.012        70.7424      0.0946367           1134           6057          48454
            0.012        60.2963      0.0951719           1800           6091          48728
            0.012        70.5213      0.0969766           1081           6207          49652
            0.012        186.693      0.0939727           2202           6015          48114
            0.012        93.9688      0.0920527           1674           5890          47131
            0.012        40.0087      0.0970078            370           6208          49668
            0.012        38.4984      0.0942148            334           6029          48238
            0.012        67.3645      0.0960605           1110           6154          49183
            0.012        43.5453      0.0965176            372           6178          49417
            0.012        95.8111       0.091332           1543           5845          46762
            0.012        43.5155      0.0946895            623           6064          48481
            0.012        80.1559      0.0943125           1251           6036          48288
            0.012        247.165      0.0905391           3108           5792          46356
            0.012        277.671      0.0944512           3164           6047          48359
            0.012        48.5221      0.0960098            439           6144          49157
            0.012        297.352      0.0949941           3339           6082          48637
            0.012        204.136      0.0879238           4198           5629          45017
            0.012        130.893      0.0971035           1709           6213          49717
            0.013        445.916      0.0931211           5457           5957          47678
            0.013         548.95       0.087084           6748           5575          44587
            0.013        510.439      0.0876914           6961           5607          44898
            0.013        453.362      0.0903633           5377           5785          46266
            0.013        433.291      0.0902598           6424           5777          46213
            0.013        488.888       0.090748           5610           5809          46463
            0.013        590.815      0.0858164           6364           5491          43938
            0.013        361.011      0.0877891           5415           5609          44948
            0.013        694.809      0.0813438           7598           5208          41648
            0.013        764.462      0.0816523           7962           5227          41806
            0.013        274.381      0.0875879           4964           5602          44845
            0.013        579.221      0.0906836           6305           5809          46430
            0.013        396.035      0.0898242           5842           5749          45990
            0.013        436.486      0.0953926           4721           6103          48841
            0.013        337.765      0.0938789           4031           6012          48066
            0.013        562.777      0.0881211           5780           5641          45118
            0.013        695.056      0.0844961           7625           5410          43262
            0.013        611.462      0.0916172           6427           5862          46908
            0.013         292.06      0.0887637           4742           5681          45447
            0.013        626.495      0.0821836           6655           5257          42078
            0.014        721.512      0.0780508           8712           4993          39962
            0.014        817.965      0.0750781           7769           4806          38440
            0.014        891.921      0.0810293           7833           5187          41487
            0.014        686.828      0.0797559           7337           5106          40835
            0.014        725.005      0.0795703           7964           5091          40740
            0.014        742.765      0.0797363           8041           5103          40825
            0.014        650.485       0.078832           6884           5043          40362
            0.014        592.835      0.0805723           7690           5156          41253
            0.014        602.256      0.0759941           7490           4861          38909
            0.014        711.066      0.0795957           7907           5091          40753
            0.014        635.627      0.0849004           8040           5431          43469
            0.014        656.196      0.0809961           7587           5181          41470
            0.014        532.391      0.0846953           7769           5419          43364
            0.014        713.374       0.081248           7508           5199          41599
            0.014        583.871      0.0849941           7858           5437          43517
            0.014        586.321       0.082998           7314           5311          42495
            0.014        816.468      0.0803672           7624           5137          41148
            0.014        574.926      0.0855742           8113           5481          43814
            0.014         883.11      0.0828105           8834           5306          42399
            0.014        724.309      0.0827988           7508           5300          42393
            0.015        986.635      0.0778516           8919           4981          39860
            0.015        848.222      0.0784277           8587           5016          40155
            0.015        766.805      0.0797949           8721           5107          40855
            0.015        1026.88      0.0763926           9070           4887          39113
            0.015        868.007      0.0801504           8585           5130          41037
            0.015        903.013      0.0781191           8977           4999          39997
            0.015        877.099      0.0754629           8988           4829          38637
            0.015        698.973        0.07975           8748           5104          40832
            0.015        971.592      0.0811484           8174           5190          41548
            0.015        950.978      0.0754922           8117           4834          38652
            0.015        943.843      0.0761543           8304           4877          38991
            0.015        1044.43      0.0762617           8877           4881          39046
            0.015        963.697       0.072502           8567           4641          37121
            0.015        749.163      0.0789004           7367           5052          40397
            0.015        857.844      0.0762383           7948           4882          39034
            0.015        726.752      0.0778184           8490           4979          39843
            0.015        1058.29      0.0740898           8885           4739          37934
            0.015        883.553      0.0780781           8258           4995          39976
            0.015        862.632      0.0831191           7923           5321          42557
            0.015        946.766      0.0751523           9312           4811          38478
            0.016        1280.82      0.0684414           9418           4379          35042
            0.016        1084.77      0.0707402           9251           4531          36219
            0.016         1041.7      0.0806562           9158           5160          41296
            0.016         1078.6      0.0773984           8867           4955          39628
            0.016        1088.29      0.0797715           8702           5104          40843
            0.016        1160.16      0.0762578           8772           4881          39044
            0.016         1203.7      0.0791309           9348           5064          40515
            0.016        1020.03      0.0741641           8677           4749          37972
            0.016        1502.81      0.0704414           9042           4508          36066
            0.016        1087.61      0.0786562           8902           5038          40272
            0.016        1025.74      0.0733359           8571           4696          37548
            0.016        974.416      0.0757891           8809           4846          38804
            0.016        1118.13      0.0753496           9108           4822          38579
            0.016        1189.29      0.0721191           8788           4613          36925
            0.016        1291.19      0.0768066           9165           4918          39325
            0.016        1256.73      0.0747168           8957           4786          38255
            0.016        1018.14      0.0746406           8599           4776          38216
            0.016        1075.06      0.0739199           9701           4731          37847
            0.016        1132.88      0.0743418           9221           4764          38063
            0.016        1273.05      0.0768574           8721           4919          39351
];

rows = size(data, 1);
cols = size(data, 2);

data_delay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+1);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_delay = [data_delay; data(ifirst, 1:cols-5), avg ci];
end

figure(1);
hold on;
plot(data_delay(:,1), data_delay(:,2), symbol);

data_throughput = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+2);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_throughput = [data_throughput; data(ifirst, 1:cols-5), avg ci];
end

figure(2);
hold on;
plot(data_throughput(:,1), data_throughput(:,2), symbol);

data_maxdelay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+3);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_maxdelay = [data_maxdelay; data(ifirst, 1:cols-5), avg ci];
end

figure(3);
hold on;
plot(data_maxdelay(:,1), data_maxdelay(:,2), symbol);


%-------- Saturation Analysis -----------
slope=[];
for i=2:size(data_throughput,1),
    slope(i-1) = (data_throughput(i,2)-data_throughput(i-1,2))/(data_throughput(i,1)-data_throughput(i-1,1));
end

for i=2:size(slope,2),
    if slope(i) < (0.95*mean(slope(1:i)))
        max_pir = data_throughput(i, 1);
        max_throughput = data_throughput(i, 2);
        min_delay = data_delay(i, 2);
        break;
    end
end
